package com.atguigu.gmall.product.service;

import com.atguigu.gmall.model.list.SearchAttr;
import com.atguigu.gmall.model.product.*;
import com.baomidou.mybatisplus.core.metadata.IPage;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author: 孙润达
 * @Date: 2022/1/2 12:14
 */
public interface ManageService {
    //获取一级标题getCategory1
    List<BaseCategory1> getCategory1();

    //获取二级标题getCategory2
    List<BaseCategory2> getCategory2(Long category1Id);
    //获取三级标题getCategory3
    List<BaseCategory3> getCategory3(Long category2Id);
    //根据多级标题获取详细内容
    List<BaseAttrInfo> attrInfoList(Long category1Id, Long category2Id, Long category3Id);
    //添加平台属性
    void saveAttrInfo(BaseAttrInfo baseAttrInfo);
    //修改平台属性（回显数据）
    List<BaseAttrValue> getAttrValueList(Long attrId);
    //分页查询
    IPage baseTrademark(Integer page, Integer limit);
    //添加品牌
    void baseTrademarkSave(BaseTrademark baseTrademark);
    //删除品牌
    void remove(Long baseTrademarkId);

    //查询单个品牌（改回品牌用于回显数据）
    BaseTrademark getByIdBaseTrademark(Long baseTrademarkId);
    //保存单个品牌（修改品牌）
    void update(BaseTrademark baseTrademark);
    //spu分页查询
    IPage spuInfo(Integer page, Integer limit, Long category3Id);
    //获取品牌属性值
    List<BaseTrademark> getTrademarkList();
    //获取销售属性值
    List<BaseSaleAttr> baseSaleAttrList();
    //保存spu内容
    void saveSpuInfo(SpuInfo spuInfo);
    //根据spuId获取图片列表
    List<SpuImage> spuImageList(Long spuId);
    //根据spuId获取销售属性
    List<SpuSaleAttr> spuSaleAttrList(Long spuId);
    //添加sku
    void saveSkuInfo(SkuInfo skuInfo);
    //分页查询sku
    IPage<SkuInfo> list(Integer page, Integer limit);
    //sku上下架
    void onSale(Long skuId);
    //sku下架
    void cancelSale(Long skuId);
    //通过三级分类id查询分类信息
    BaseCategoryView getCategoryView(Long category3Id);
    //获取sku最新价格
    BigDecimal getSkuPrice(Long skuId);
    //根据skuId获取sku信息,根据skuId 查询图片列表集合
    SkuInfo getSkuInfo(Long skuId);
    //根据spuId，查询spu_sale_attr_value（被选中的）
    List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId,Long spuId);
    //根据spuId，skuId 查询销售属性集合
    Map getSkuValueIdsMap(Long spuId);
    //查询全部分类视图集合
    List<BaseCategoryView> getBaseCategoryList();
    //3.查询品牌
    BaseTrademark getBaseTrademark(Long tmId);
    // 5.平台属性集合
    List<SkuAttrValue> getSkuAttrValue(Long skuId);
}
